gRPC HelloWorld测试

您所在的位置:网站首页 modulenotfounderror no module named modelsexperimental gRPC HelloWorld测试

gRPC HelloWorld测试

2022-06-06 23:36| 来源: 网络整理| 查看: 265

gRPC HelloWorld测试 发布时间:2020-06-23 20:48:04 来源:网络 阅读:209576 作者:九月朦胧 栏目:编程语言 一、概述

What's gRPC?gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services.(gRPC是可以在任何环境中运行的现代的开源高性能RPC框架。它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证。它也适用于分布式计算的最后一英里,以将设备,移动应用程序和浏览器连接到后端服务。)我们可以用一句话来概括:A high-performance, open-source universal RPC frameworkRPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型。使用的时候客户端调用server端提供的接口就像是调用本地的函数一样。

so在什么情况下需要使用gRPC呢?需要对接口进行严格约束的情况,比如我们提供了一个公共的服务,很多人,甚至公司外部的人也可以访问这个服务,这时对于接口我们希望有更加严格的约束,我们不希望客户端给我们传递任意的数据,尤其是考虑到安全性的因素,我们通常需要对接口进行更加严格的约束。这时gRPC就可以通过protobuf来提供严格的接口约束。对于性能有更高的要求时。有时我们的服务需要传递大量的数据,而又希望不影响我们的性能,这个时候也可以考虑gRPC服务,因为通过protobuf我们可以将数据压缩编码转化为二进制格式,通常传递的数据量要小得多,而且通过http2我们可以实现异步的请求,从而大大提高了通信效率。但是,通常我们不会去单独使用gRPC,而是将gRPC作为一个部件进行使用,这是因为在生产环境,我们面对大并发的情况下,需要使用分布式系统来去处理,而gRPC并没有提供分布式系统相关的一些必要组件。而且,真正的线上服务还需要提供包括负载均衡,限流熔断,监控报jing,服务注册和发现等等必要的组件。

二、测试

接下来开始gRPC的Hello World测试gRPC的使用通常包括如下几个步骤:1、通过protobuf来定义接口和数据类型2、编写gRPC server端代码3、编写gRPC client端代码

1、通过protobuf来定义接口和数据类型

我实在mac中使用的python,mac中自带python2,因为需要,自己安装了python3。首先pip3 安装grpc和protobuf

(lxc) liuxuchong:untitled liuxuchong$ pip3 install grpcio Collecting grpcio Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)")': /packages/0d/27/0413a5dffd7ddca4ea43cffd22f46ec2b26a5ed18c974e4448763e758a9b/grpcio-1.25.0-cp37-cp37m-macosx_10_9_x86_64.whl Downloading https://files.pythonhosted.org/packages/0d/27/0413a5dffd7ddca4ea43cffd22f46ec2b26a5ed18c974e4448763e758a9b/grpcio-1.25.0-cp37-cp37m-macosx_10_9_x86_64.whl (2.3MB) 100% |████████████████████████████████| 2.3MB 8.1kB/s Collecting six>=1.5.2 (from grpcio) Using cached https://files.pythonhosted.org/packages/65/26/32b8464df2a97e6dd1b656ed26b2c194606c16fe163c695a992b36c11cdf/six-1.13.0-py2.py3-none-any.whl Installing collected packages: six, grpcio Successfully installed grpcio-1.25.0 six-1.13.0 (lxc) liuxuchong:untitled liuxuchong$ pip3 install protobuf Collecting protobuf Downloading https://files.pythonhosted.org/packages/a5/c6/a8b6a74ab1e165f0aaa673a46f5c895af8780976880c98934ae82060356d/protobuf-3.10.0-cp37-cp37m-macosx_10_9_intel.whl (1.4MB) 100% |████████████████████████████████| 1.4MB 83kB/s Requirement already satisfied: setuptools in ./venv/lxc/lib/python3.7/site-packages/setuptools-40.8.0-py3.7.egg (from protobuf) (40.8.0) Requirement already satisfied: six>=1.9 in ./venv/lxc/lib/python3.7/site-packages (from protobuf) (1.13.0) Installing collected packages: protobuf Successfully installed protobuf-3.10.0

定义protobuf

下面定义一个简单的protobuf文件,在其中声明一个grpc服务。 创建一个proto目录,并在其中创建grpchello.proto文件,如下内容。

syntax = "proto3"; package grpcDemo; message HelloRequest { string name = 1; } message HelloReply { string message = 1; } service gRPC { rpc SayHello (HelloRequest) returns (HelloReply) {} }

编译protobuf

使用protobuf的编译器,为我们生成python版本的Message定义和服务的架手脚。

lxc) liuxuchong:untitled liuxuchong$ python -m grpc-tools.protoc -I./proto --python_out=. --grpc_python_out=. grpchello.proto /Users/liuxuchong/PycharmProjects/untitled/venv/lxc/bin/python: Error while finding module specification for 'grpc-tools.protoc' (ModuleNotFoundError: No module named 'grpc-tools')

提示我们没有安装grpc-tools,用pip安装一下

python3 -m pip install --user grpcio-tools

然后在运行上面的命令

在当前目录下,生成2个文件:

grpchello_pb2.py grpchello_pb2_grpc.py

查看第一个文件,消息定义文件:

# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: grpchello.proto import sys _b=sys.version_info[0]=1.5.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from grpcio) (1.13.0) Installing collected packages: grpcio Successfully installed grpcio-1.25.0

果然刚才装的丢了。。。然后运行python3 get_service.py

gRPC HelloWorld测试打开一个新的窗口运行python3 client.pygRPC HelloWorld测试

在原来的窗口可以看到called with lxcgRPC HelloWorld测试

参考资料:https://www.jianshu.co×××c947d98e192https://blog.csdn.net/whereismatrix/article/details/78595550

推荐内容:记一次技术调研(一): iOS 应用实现 gRPC 调用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python3使用grpc grpc helloworld测试 gr 上一篇新闻:十四 手游开发神器 cocos2d-x editor 之串联游戏流程 下一篇新闻:【node.js】本地模式安装express:'express' 不是内部或外部命令 猜你喜欢 Dubbo并发调优的参数分别是什么 Kafka 的 Lag 计算误区及正确实现 springCloud入门学习(四):Eureka元数据 Spring AOP之概念解释 JavaWeb基础入门讲解 死磕 java同步系列之JMM(Java Memory Model) Java 1:利用递归、非递归求n的阶乘 你真的了解分布式系统到底是什么吗? java编写一个含有100个随机值的文本,且从文本中读回数据并以升序显示数据 数据库查询性能优化之利器—索引(二)


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3